const interfaces = require('../../utils/urlconfig.js');
Page({
    /**
     * 页面的初始数据
     */
    data: {
        partData: {},
        baitiao: [],
        baitiaoSelectItem: {
            desc: "【白条支付】首单享立减优惠"
        },
        hideBaitiao: true,
        // 已选弹框数据
        hideBuy: true,
        badgeCount: 0, //用于显示tab下购物车的数量
    },
    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function(options) {
        console.log(options)
        let id = options.id; //上一页面传入过来具体的ID号
        wx.setNavigationBarTitle({
            title: '商品详情',
        })
        let _this = this;
        wx.showLoading({
            title: '加载中...',
        })
        wx.request({
            url: interfaces.productionDetail,
            method: 'GET',
            header: {
                'content-type': 'application/json'
            },
            success(res) {
                // console.log(res)
                /*需求把传入过来的ID和请求回来数据里的ID匹配并渲染*/
                let result = null;
                res.data.forEach(item => {
                    if (item.partData.id == id) {
                        result = item
                    }
                })
                _this.setData({
                    partData: result.partData,
                    baitiao: result.baitiao

                })
                wx.hideLoading()
            },
            fail(error) {
                console.log(error)
            }
        })
    },
    popBaitiaoView() { //白条弹框对子组件传入的方法操作
        this.setData({
            hideBaitiao: false
        })
        // console.log(this.data)
    },
    popBuyView() { //点击已选
        console.log(`点击已选`)
        this.setData({
            hideBuy: false
        })
    },
    selectItem(e) { //点击立即打白条,获取子组件传过来的值
       // console.log(e.detail.desc) //可以从e中得到传过来信息
        let updaSelectItem = e.detail;
        this.setData({
            baitiaoSelectItem: e.detail
        })

    },
    updateCount(e) { //由第三层amount子组件传上来的,作用于用户Input输入事件
        let value = e.detail.val;
        let partData = this.data.partData;
        partData.count = value
        this.setData({
            partData: partData
        })
    },
    addCart() { //加入购物车
        let _this = this;
        // 点击的时候获取cartInfo存储的数据,因为第一次没有数据所以会进入fail,那么可以在fail中写入,之后再点击会进入getStorage
        wx.getStorage({
            key: 'cartInfo',
            success(res) {
                /*
                                        res存的是之前第一次在fail已经存入的数据,所以这里要进行一个对比,
                                        如果存入的与data里的最新数据不一致就再存一次一致的话就建一个新变量让数量加加
                                        */
                let partData = _this.data.partData;
                let cartArry = res.data; //返回数组
                let isExit = false;
                cartArry.forEach(cart => {
                    if (cart.id == partData.id) { //如果能匹配上就证明本地已存储,只需要对数量想加就可以
                        cart.cartTotal += parseInt(partData.count)
                        isExit = true;
                        wx.setStorage({
                            key: 'cartInfo',
                            data: cartArry,
                        })
                        _this.setbadge(cartArry)
                    }
                })
                if (!isExit) { //如果没匹配上就对当前data中的数据再存一次
                    // 把count赋值
                    partData.cartTotal = partData.count;
                    // 把新数组推入本地存储
                    cartArry.push(partData)
                    //再存一次
                    wx.setStorage({
                        key: 'cartInfo',
                        data: cartArry,
                    })
                    _this.setbadge(cartArry)
                }
            },
            fail() { //第一次会进入fail存起来后第二次会进入success
                let partData = _this.data.partData;
                // 把数据放入一个新建的数组里,方便后续便利
                let cartArry = [];
                // 第一次进来的时候就给partData新增一个属性用来计算总数量,让后面有相同的数据的总和相加
                partData.cartTotal = _this.data.partData.count
                cartArry.push(partData)
                // 把数组存起来
                wx.setStorage({
                    key: 'cartInfo',
                    data: cartArry,
                })
                _this.setbadge(cartArry)
            }
        })
        wx.showToast({
            title: '加入购物车',
            icon: 'success',
            duration: 3000
        })
    },
    setbadge(cartArry) { //购物车显示商品品种数量方法
        this.setData({
            badgeCount: cartArry.length
        })
    },
    showCartView(){//点击购物车跳转
        // 跳转tab
        wx.switchTab({
            url: '/pages/cart/index',
        })
    },
    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady: function() {

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow: function() { //在页面一渲染的时候就需要调用本地存储方法
        const _this = this;
        wx.getStorage({
            key: 'cartInfo',
            success: function(res) {
                const cartArray = res.data;
                _this.setbadge(cartArray)

            },
        })

    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide: function() {

    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload: function() {

    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh: function() {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom: function() {

    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage: function() {

    }
})